package com.gagakuai.transport.channel;


/*
 * @description: 数据入站时候的调用程序,可以理解为在事件到达时候的回调函数
 * @author: houhong
 * @create: 2024-03-19 00:24
 */
public interface ChannelInboundInvoker {


    /*
     * @return {@link ChannelInboundInvoker }588888888888888888888888888888888888888888854
     * @descriptionç
     * 在 Channel 已注册到其 EventLoop     * 这将导致使用 ChannelInboundHandler#channelRegistered(ChannelHandlerContext) 方法
     * 的 ChannelPipeline 中包含的下一个 ChannelInboundHandler 的调用
     *   渠道
     * @author houhong
     */
    ChannelInboundInvoker firedChannelRegistered();

    /*
    *  当一个 Channel 从他的eventLoop中注销的时候 调用程序
    *    他将导致 ChannelInboundHandler#channelUnregistered(ChannelHandlerContext 方法
    *    调用 ChannelPipeline 中包含的下一个 ChannelInboundHandler
    *    channel。
    *
    */
    ChannelInboundInvoker fireChannelUnregistered();



    /*
    *
    *  当channel处于active的时候，即意味着channel 连接上了服务端
    */
    ChannelInboundInvoker fireChannelActive();

    /*
     *
     *  当channel处于active的时候，即意味着channel 从服务端断开
     */
    ChannelInboundInvoker fireChannelInactive();


    /*
    *   channel 接受一个 在 inboundHandler的 i/o操作 异常的时候接受一个exception
    */
    ChannelInboundInvoker fireExceptionCaught(Throwable cause);



}
